package  
{
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.events.KeyboardEvent;
	import flash.ui.Keyboard;
	/**
	 * ...
	 * @author Luis Felipe
	 */
	public class Personagem extends MovieClip
	{
		// espaço reservado para criação de variáveis
		
		var vida : int;
		
		var direita : Boolean;
		var esquerda : Boolean;
		var cima : Boolean;
		var espaco: Boolean;
		
		var direcao : String;
		
		var velocidadeY : int;
		var alturaPulo : int;
		var podePular : Boolean;
		
		var AR_pisos : Array; 
		
		public function Personagem(AR_solo) 
		{
			// responsável por CARREGAR as informações iniciais da nossa classe
			
			vida = 5;
			
			direita = false;
			esquerda = false;
			cima = false;
			espaco = false;
			
			direcao = "direita";
			
			velocidadeY = 0;
			alturaPulo = 20;
			podePular = false;
			
			AR_pisos = AR_solo;
			
			addEventListener(Event.ADDED_TO_STAGE, iniciarStage);
			addEventListener(Event.ENTER_FRAME, update);
			
			
		}
		
		public function iniciarStage(e:Event):void
		{
			stage.addEventListener(KeyboardEvent.KEY_DOWN, pressionar);
			stage.addEventListener(KeyboardEvent.KEY_UP, soltar);
		}
		
		public function update(e:Event)
		{
			mover();
			gravidade();
			pular();
		}
		
		public function pressionar(e:KeyboardEvent):void
		{
			if (e.keyCode == Keyboard.RIGHT)
			{
				direita = true;
			}
			if (e.keyCode == Keyboard.LEFT)
			{
				esquerda = true;
			}
			if (e.keyCode == Keyboard.UP)
			{
				cima = true;
			}
			if (e.keyCode == Keyboard.SPACE)
			{
				espaco = true;
			}
		}
		
		public function soltar(e:KeyboardEvent):void
		{
			if (e.keyCode == Keyboard.RIGHT)
			{
				direita = false;
			}
			if (e.keyCode == Keyboard.LEFT)
			{
				esquerda = false;
			}
			if (e.keyCode == Keyboard.UP)
			{
				cima = false;
			}
			if (e.keyCode == Keyboard.SPACE)
			{
				espaco = false;
			}
		}
		
		public function mover():void
		{
			if (direita == true)
			{
				this.x += 10;
				this.scaleX = 1;
				direcao = "direita";
			}
			if (esquerda == true)
			{
				this.x -= 10;
				this.scaleX = -1;
				direcao = "esquerda";
			}
		}
		
		public function pular():void
		{
			if (podePular == true)
			{
				if (cima == true)
				{
					velocidadeY -= alturaPulo;
				}
			}
			
		}
		
		public function gravidade():void
		{
			velocidadeY += 1;
			this.y += velocidadeY;
			podePular = false;
			
			if (velocidadeY >= 15)
			{
				velocidadeY = 15;
			}
			
			for (var i : int = 0; i < AR_pisos.length; i++ )
			{
				if (this.hitTestObject(AR_pisos[i]) && this.y <= AR_pisos[i].y && velocidadeY > 0)
				{
					velocidadeY = 0;
					this.y = AR_pisos[i].y - AR_pisos[i].height / 2 - this.height / 2;
					podePular = true;
				}
			}
		
		}
		
	}

}